package com.itany.corejava.code17_设计模式.模板模式;

import java.util.Arrays;

/**
 * @author Miss Chen
 * @version 1.0
 * @date 2024年08月13日10:36
 */
public abstract class SortUtil {
    public static void main(String[] args) {
        int[] arrs={11,2,7,9,5,8,3,1};
        SortUtilDesc desc=new SortUtilDesc();
        int[] sort=desc.sort(arrs);
        System.out.println(Arrays.toString(sort));

    }
    public abstract int compareTo(int i,int j);
    public int[] sort(int[] arr){

        //外层循环控制比较的轮数 {2,78,7,65,9}
        // 1       2  78  7  65  9      2  7  78  65  9      2  7  65  78  9      2  7  65  9  78
        // j=0   1  2  3
        for(int i=1;i<arr.length;i++){
            //先指定一个顶层逻辑架构
            //内层循环控制每一轮比较的次数
            for(int j=0;j<arr.length-i;j++){

                //将具体的实现细节留给具体的方法调用者进行实现的
                int result= compareTo(arr[j],arr[j+1]);
                if(result>0){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        return arr;
    }
}
class SortUtilDesc extends SortUtil{

    @Override
    public int compareTo(int i, int j) {
        return i-j;
    }
}